#pragma once

////////////////////////////////////////////////////////////////////////////////////////////////////
/// <Summary>	MainEngine  </Summary>
/// 
/// <purpose>	Static class used to wrap up all engine functionality	</purpose>
////////////////////////////////////////////////////////////////////////////////////////////////////

class MainEngine
{

private:

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	Used to disable all functionality beyond a static class </Summary>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	MainEngine(const MainEngine&);           
	MainEngine& operator=(const MainEngine&);
	MainEngine(void) {}					 
	~MainEngine(void) {}

public:

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	Initializes all the internal objects </Summary>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	static void Initialize();

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	Updates the engine </Summary>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	static void Update();

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	Shuts down the engine and all internal objects </Summary>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	static void Shutdown();
};